<?

// Implementacio de conjunts

class set
{
	 var $elems;


	 function set()
	 {
		  $this->elems=array();
	 }

	 
	 function add($item)
	 {
		  $trobat=false;
		  $i=0;
		  while (!$trobat && $i<count($this->elems))
		  {
				if ($this->elems[$i]==$item)
				  $trobat=true;
				$i++;
		  }
		  
		  if (!$trobat)
			 $this->elems[]=$item;
			 
		  sort($this->elems);
	 }
	 
	 function del($item)
	 {
		  // que coi fot php amb els index quan unsetes???
		  
		  $idx=array_search($item, $this->elems);
		  if ($idx!==false)
			 unset($this->elems[$idx]);
		  
		  sort($this->elems); // rotllo renum... com que no se sap si reordena o no... :/		  
	 }
	 
	 function getElems()
	 {
		  return ($this->elems);
	 }
	 
	 function size()
	 {
		  return count($this->elems);
	 }

	 function union($set)
	 {
		  foreach ($set->getElems() as $k => $v)
				$this->add($v);
	 }
	 
	 function has($item)
	 {
		  return (array_search($item, $this->elems)!==false);
	 }
	 
	 function intersect($set)
	 {
		  $copia=$this->getElems();
		  foreach ($copia as $k => $v)
		  {
				if (!$set->has($v))
				  $this->del($v);
		  }
		  
		  sort($this->elems);
	 }
	 
}

?>
